const { defineConfig } = require('@vue/cli-service')
// 需要排除的包 对象
// let externals = {}
// 判断是否是生成环境
// const isProduction = process.env.NODE_ENV === 'production'
// if (isProduction) {
//   externals = {
//     /**
//      * externals 对象属性解析：
//      * '包名': '在项目中引入的名字'
//      * 以 element-ui 举例 我再 main.js 里是以
//      * import ELEMENT from 'element-ui'
//      * Vue.use(ELEMENT)
//      * 这样引入的，所以我的 externals 的属性值应该是 ELEMENT
//      * 一定要去main.js设置
//      */
//     echarts: 'echarts',
//     vue: 'Vue',
//     'vue-router': 'VueRouter',
//     vuex: 'Vuex',
//     axios: 'axios',
//     dayjs: 'dayjs',
//     'element-ui': 'ELEMENT',
//     'vue-quill-editor': 'VueQuillEditor',
//     'vuex-persistedstate': 'createPersistedState'
//   }
// }
module.exports = defineConfig({
  transpileDependencies: true,
  // 影响打包时 index.html引入其他资源的前缀地址
  // ./可以让开发环境和生产环境都可以正常使用
  // 为了严谨一些
  // 开发环境： '/'
  // 生产环境：'./'
  // publicPath: './' 这个开发环境和生产环境都能用 但是不够严谨
  // 问题：有无代码可以让它自己识别当前运行环境
  // node里有个内置的环境变量 process.env.NODE_ENV
  // process.env.NODE._ENV 它会根据你瞧记得命令 来使用不同的值
  // 解决：
  // 如果你敲击的是 yarn serve process.env.NODE_ENV的值就是'development'字符串
  // 如果你敲击的是 yarn build process.env.NODE_ENV的值就是'production'字符串
  // publicPath: './'
  publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
  configureWebpack: {
    // provide the app's title in webpack's name field, so that
    // it can be accessed in index.html to inject the correct title.
    externals: {
      // 基本格式：
      // '包名' : '在项目中引入的名字'
      echarts: 'echarts',
      vue: 'Vue',
      'vue-router': 'VueRouter',
      vuex: 'Vuex',
      axios: 'axios',
      dayjs: 'dayjs',
      'element-ui': 'ELEMENT',
      'vue-quill-editor': 'VueQuillEditor',
      'vuex-persistedstate': 'createPersistedState'
    }
    // externals: externals
  }
})
/**
 * 我们虽然配出掉了第三方的包
 * 打包dist和开发环境都会使用这套配置 并排除第三方包
 * 生产环境 打包时会以public/index.html作为模板 生成dist/index.html
 * index.html中就有了那些cdn地址
 * 开发环境 public/index.html 也有那些第三方的地址 所以也能正常运行
 * 但是第一次的速度会有点慢 所以开发环境呢我还是想让webpack引入本地node_modules那些第三方包
 * process.env.NODE_ENV 可以
 */
